﻿/*
 * modbustcp.hpp
 *
 *  Created on: 2017年10月28日
 *      Author: work
 */

#ifndef _DM_PROTOCOL_MODBUSTCP_HPP_
#define _DM_PROTOCOL_MODBUSTCP_HPP_

#include <dm/export.hpp>

#ifndef DM_API_PROTOCOL
#define DM_API_PROTOCOL DM_API_IMPORT
#endif

#include <dm/protocol/framemodbustcp.hpp>
#include <dm/protocol/protocol.hpp>

namespace dm{
namespace protocol{

/**
 * Modbus TCP规约基类
 */
class DM_API_PROTOCOL CModbusTcp:virtual public CProtocol{
public:
	CModbusTcp();
	virtual ~CModbusTcp();

	const dm::protocol::CFrame& getTxFrame();
	dm::protocol::CFrame& getRxFrame();

protected:
	inline CFrameModbusTcp& txFrame(){
		return *m_txFrame;
	}

	inline CFrameModbusTcp& rxFrame(){
		return *m_rxFrame;
	}

	virtual CFrameModbusTcp* genTxTempFrame()=0;
	virtual CFrameModbusTcp* genRxTempFrame()=0;

private:
	CFrameModbusTcp* m_rxFrame;
	CFrameModbusTcp* m_txFrame;
};

}
}

#endif /* DM_RUNTIME_INCLUDE_DM_PROTOCOL_MODBUSTCP_HPP_ */
